6 de Junio, 2017

Contenidos

1. Introducción: ¿Qué es R Markdown?

Los analistas de datos a menudo escribimos informes presentando los resultados obtenidos tras el análisis estadístico de unos datos. Es conveniente que los resultados presentados sean completamente reproducibles.

R Markdown permite combinar texto, código y los resultados del código en un sólo documento. Al procesar el documento, el código se evalúa y los resultados obtenidos se presentan junto al texto en el informe.

El texto se escribe en lenguaje Markdown, una forma sencilla de escribir texto simple (secciones, párrafos, listas, enlaces, imágenes,…) que se convierte fácilmente a otros formatos (HTML, PDF, Word, …).

Introducción: Utilidades de R Markdown

  • Procesador de textos: escribir documentos que contengan fórmulas matemáticas, tablas y figuras.

  • Presentar, compartir y publicar resultados en varios formatos (pdf, word, html, …).

  • Generar informes automáticamente.

  • Organizar y compartir código y resultados en un mismo documento fácil de escribir y leer.
    • Tablas y figuras sincronizadas con la última versión de los datos y el código.
    • Se reducen errores de transcripción manual de resultados.
  • Herramienta muy útil para la reproducibilidad y para todo usuario de R.

Objetivo: Aprender a elaborar informes reproducibles utilizando R Markdown.

Introducción: ¿Cómo funciona R Markdown?

La creación de documentos a partir de R Markdown comienza con un archivo .Rmd que contiene texto y trozos de código R. El archivo .Rmd se envía a knitr, que ejecuta los fragmentos de código R y crea un documento markdown (.md) que incluye el código y su salida. Entonces, Pandoc procesa el archivo .md para crear el informe final en forma de página web, PDF, documento Word, presentación, etc.

Fuente


El paquete Rmarkdown encapsula todo este proceso en una función llamada render().

2. Creación de un documento R Markdown desde RStudio

Paso 1. Abrimos RStudio.

Paso 2. Instalamos el paquete R Markdown desde CRAN (en caso de no haberlo instalado previamente):

install.packages("rmarkdown")

Paso 3. Seleccionamos File ➾ New File ➾ R Markdown.

Paso 4. Escribimos el título, autor, elegimos el formato de nuestro documento: HTML, PDF, Word, presentación, … y pulsamos OK.

A continuación, se genera automáticamente un documento R Markdown de ejemplo. Para obtener el informe final utilizamos la función render("Ejemplo.Rmd") o pulsamos el botón knit.

3. Componentes de un archivo R Markdown

Hay 3 componentes generales en un archivo R Markdown:

Cabecera (YAML) rodeada por ---

Texto en formato Markdown

Trozos de código R (code chunks) rodeados por : ```{r} código_R ```

4. Formateando el texto: sintaxis en línea


  • Texto en *cursiva* o _cursiva_ ► Texto en cursiva o cursiva

  • Texto en **negrita** o __negrita__ ► Texto en negrita o negrita

  • Subíndice~2~, superíndice^^2^^ ► Subíndice2, superíndice2

  • ~~Tachado~~Tachado

  • Enlace a [RStudio](http://www.rstudio.com) ► Enlace a RStudio

  • Imagen: ![](figuras/RStudio-Ball.png):

Imagen:

  • ' Texto como código ' ► Texto como código

  • ^[Nota a pie de página]1

Formateando el texto: sintaxis en bloque

# Encabezado 1

## Encabezado 2

Encabezado 1

Encabezado 2


> Cita textual

Cita textual



Tablas:

Cabecera 1 | Cabecera 2
-----------| -------------
Celda 1 | Celda 2
Celda 3 | Celda 4
Cabecera 1 Cabecera 2
Celda 1 Celda 2
Celda 3 Celda 4

Formateando el texto: sintaxis en bloque

Listas desordenadas:

* Elemento 1
* Elemento 2
    - Sub-elemento 1
    - Sub-elemento 2
  • Elemento 1
  • Elemento 2
    • Sub-elemento 1
    • Sub-elemento 2

Listas ordenadas:

1. Elemento 1
2. Elemento 2
    - Sub-elemento 1
    - Sub-elemento 2
  1. Elemento 1
  2. Elemento 2
    • Sub-elemento 1
    • Sub-elemento 2

Formateando el texto: expresiones matemáticas

  • Ecuaciones en línea.

$f(k)={m \choose k }p^{k}(1-p)^{n-k}$

\(f(k)={m \choose k }p^{k}(1-p)^{n-k}\)

  • Ecuaciones aparte.

$$f(k)={m \choose k }p^{k}(1-p)^{n-k}$$

\[f(k)={m \choose k }p^{k}(1-p)^{n-k}\] Apuntes LáTeX: Fórmulas matemáticas - Conceptos básicos

  • Entornos matemáticos.
$$\Theta = \begin{pmatrix}\alpha & \beta\\
\gamma & \delta
\end{pmatrix}$$

$$\begin{vmatrix}a & b\\
c & d
\end{vmatrix}=ad-bc$$

\[\Theta = \begin{pmatrix}\alpha & \beta\\ \gamma & \delta \end{pmatrix}\]

\[\begin{vmatrix}a & b\\ c & d \end{vmatrix}=ad-bc\]

5. Trozos de código R (code chunks)

Existen dos tipos de código R en un documento R Markdown:

  • Código en línea. Se escribe entre `r `.
  • Trozos de código. Comienzan con ```{r nombre_trozo} y terminan con ```.

Se insertan rápidamente pulsando el botón

Podemos añadir etiquetas para nombrar los trozos de código (deben ser únicas) y personalizar la salida del código con distintas opciones que se añaden como argumentos en la cabecera.

Ejemplo:

Asignar un nombre a cada trozo de código nos permite:

  • Tener identificados los
    chunks y poder navegar
    rápidamente por ellos.
  • Son importantes cuando guardamos los objetos creados por los trozos de código (almacenamiento en caché y nombre de las figuras).

Trozos de código R: Opciones

Los trozos de código R pueden personalizarse con las opciones de knitr, especificando los argumentos dentro de los corchetes de la cabecera {r }:

Opción Valor por defecto Descripción
echo TRUE Mostrar código en el documento final
eval TRUE Evaluar trozo de código
include TRUE Si es FALSE no se incluye el código (pero si se evalúa) ni los resultados en el documento final
warning TRUE Mostrar advertencias generadas por el código
error TRUE Mostrar errores generados por el código
message TRUE Mostrar mensajes generados por el código
fig.cap NULL Vector de caracteres con leyenda para las figuras

Trozos de código R: Más opciones

Opción Valor por defecto Descripción
fig.height 7 Altura de las figuras creadas por el trozo de código
fig.width 7 Anchura de las figuras creadas por el trozo de código
fig.align 'default' Alineación de las figuras en el documento ('left', 'right', 'center')
fig.path 'figure/' Directorio donde se guardarán las figuras creadas
cache FALSE Almacenamiento en caché de los resultados para reutilizarlos cada vez que se genere el documento (hasta que el código se altere)
tidy FALSE Visualizar el código de forma ordenada utilizando la función tidy_source() del paquete formatR (deja espacios entre operadores y las líneas largas de código las separa en varias líneas)
comment '##' Añadir una cadena de caracteres al comienzo de los resultados en el documento final
results 'markup' 'markup': mostrar los resultados con un cierto formato, 'hide': ocultar los resultados en el documento, 'hold': visualizar todos los resultados al final del trozo de código, 'asis': mostrar los resultados tal cual están en R

6. Opciones globales

Pueden establecerse opciones globales que se apliquen a todos los trozos de código del documento. Para ello utilizamos la función opts_chunk$set() del paquete knitr.

Ejemplo:





Nota: Utilizando :: podemos hacer uso de una función concreta, sin tener que cargar todo el contenido de un paquete.

7. Almacenamiento en caché

  • En ocasiones, la generación del documento puede llevar un tiempo considerable cuando realizamos cálculos largos para obtener todos los resultados del informe.

Para mejorar el rendimiento del documento podemos almacenar en caché los fragmentos de código: cache='TRUE'. Éstos se guardarán la primera vez que se ejecute el código y, mientras no se realicen cambios, los objetos se cargarán directamente desde caché en las próximas generaciones del documento.

Advertencia: si un trozo de código no modificado depende de otros que sí, los objetos guardados en caché correspondientes al trozo no modificado no se actualizarán. Para evitar ésto utilizamos el argumento dependson en el que indicamos un vector de caracteres con las etiquetas de los trozos de código de los que depende o un vector numérico con el número correspondiente a los trozos de código (p.ej: dependson=c(1,2)). Este argumento sólo funciona en chunks locales, no en opciones globales.

  • Por defecto, los resultados se guardan en una carpeta llamada nombre_documento_cache en el mismo directorio donde se encuentra nuestro documento. Podemos modificar este directorio y el nombre de la carpeta utilizando el argumento cache.path = 'cache/...'.

8. Tablas

Por defecto, R Markdown muestra los objetos de tipo data.frame y matrix como lo son en la terminal de R.

Ejemplo: El banco de datos mtcars contiene información sobre el consumo de combustible de 32 automóviles y otros aspectos relacionados con su diseño y rendimiento.

mtcars[1:6, 1:7]
#                    mpg cyl disp  hp drat    wt  qsec
# Mazda RX4         21.0   6  160 110 3.90 2.620 16.46
# Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02
# Datsun 710        22.8   4  108  93 3.85 2.320 18.61
# Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44
# Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02
# Valiant           18.1   6  225 105 2.76 3.460 20.22

Existen varios paquetes que permiten mostrar los datos con un formato adicional:

xtable, stargazer, pander, knitr, huxtable, DT, hwriter, htmlTable, …

Debemos indicar el argumento results='asis' en el trozo de código que genera la tabla.

A continuación veremos algunos ejemplos.

Tablas: knitr

Lo más sencillo es utilizar la función kable() de knitr. No tiene muchos argumentos pero en algunos casos es suficiente.

kable(x, format, digits = getOption("digits"), row.names = FALSE, col.names = NA, align,
  caption = NULL, ...)

Principales argumentos:

  • x: un objeto matrix o data frame.
  • format: "latex", "html", "markdown", "pandoc", "rst".
  • digits: número de dígitos para las variables numéricas (puede ser un vector especificando valores para cada columna).
  • row.names: valor lógico indicando si incluir el nombre de las filas.
  • col.names: vector de caracteres indicando el nombre de las columnas.
  • align: alineación de las columnas: 'l' (left), 'c' (center), 'r' (right).
  • caption: título de la tabla.

Ejemplo: kable()

knitr::kable(mtcars[1:6, 1:7], digits = 2, align = 'c', caption = "Banco de datos 'mtcars'.")
Banco de datos 'mtcars'.
mpg cyl disp hp drat wt qsec
Mazda RX4 21.0 6 160 110 3.90 2.62 16.46
Mazda RX4 Wag 21.0 6 160 110 3.90 2.88 17.02
Datsun 710 22.8 4 108 93 3.85 2.32 18.61
Hornet 4 Drive 21.4 6 258 110 3.08 3.21 19.44
Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02
Valiant 18.1 6 225 105 2.76 3.46 20.22

Tablas: pander

La función pandoc.table() del paquete pander permite una mayor personalización.

pandoc.table(t, caption, decimal.mark = panderOptions("decimal.mark"), round = panderOptions("round"),
             missing = panderOptions("missing"), justify,
             style = c("multiline", "grid", "simple", "rmarkdown"), emphasize.strong.cols = c(1), ...)

Principales argumentos:

  • t: un objeto data frame, matrix o table.
  • caption: título de la tabla.
  • decimal.mark: símbolo decimal (","; ".").
  • round: número de decimales en las variables numéricas.
  • missing: cadena para reemplazar valores perdidos
  • justify: 'left', 'centre', 'right', alineación de las celdas.
  • style: estilo Pandoc: 'simple', 'mutiline', 'grid' o 'rmarkdown'.
  • emphasize.strong.rows, emphasize.strong.cols: filas y columnas en negrita.
  • emphasize.italics.rows, emphasize.italics.cols: filas y columnas en cursiva.

El paquete incluye la función panderOptions() que permite establecer una gran cantidad de opciones.

Ejemplo: pandoc.table()

pander::panderOptions('table.caption.prefix', "Tabla: ")
pander::pandoc.table(mtcars[1:6, 1:7], caption = "Banco de datos 'mtcars'.", justify = 'right',
                     round = 2, emphasize.strong.cols = c(1, 5), emphasize.italics.rows = c(2, 3))
  mpg cyl disp hp drat wt qsec
Mazda RX4 21 6 160 110 3.9 2.62 16.46
Mazda RX4 Wag 21 6 160 110 3.9 2.88 17.02
Datsun 710 22.8 4 108 93 3.85 2.32 18.61
Hornet 4 Drive 21.4 6 258 110 3.08 3.21 19.44
Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02
Valiant 18.1 6 225 105 2.76 3.46 20.22

Tabla: Banco de datos 'mtcars'.

Tablas: xtable

La función xtable() del paquete xtable permite también un control preciso de las tablas.

⇢ Si le damos una salida lm() produce automáticamente la tabla de coeficientes de regresión.

xtable(x, caption = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...)

Principales argumentos:

  • x: objeto de R cuya clase aparezca en methods(xtable) (xtable.matrix, xtable.data.frame, xtable.anova, xtable.lm, xtable.glm, xtable.prcomp, …).
  • caption: título de la tabla.
  • align: vector de caracteres indicando la alineación de las columnas.
  • digits: número de dígitos a mostrar en las columnas.
  • display: vector de caracteres indicando el formato de las columnas ("d": enteros, "f": reales, "s": cadenas, …).
  • auto: TRUE/FALSE, aplicar un formato automático cuando no se pase ningún valor a align, digits o display.

Ejemplo: xtable()

Utilizando la función print() junto con xtable podemos obtener una mayor personalización.

library(xtable)
model <- lm(mpg ~ ., data = mtcars)
print(xtable(model, align = "l|ccrr", digits = 2), type = "html")
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12.30 18.72 0.66 0.52
cyl -0.11 1.05 -0.11 0.92
disp 0.01 0.02 0.75 0.46
hp -0.02 0.02 -0.99 0.33
drat 0.79 1.64 0.48 0.64
wt -3.72 1.89 -1.96 0.06
qsec 0.82 0.73 1.12 0.27
vs 0.32 2.10 0.15 0.88
am 2.52 2.06 1.23 0.23
gear 0.66 1.49 0.44 0.67
carb -0.20 0.83 -0.24 0.81

Tablas: htmlTable

La función htmlTable() del paquete htmlTable permite construir tablas avanzadas en HTML.

htmlTable(x, header, rnames, rowlabel, caption, tfoot, align = paste(rep("c", ncol(x)),
  css.table = "margin-top: 1em; margin-bottom: 1em;", pos.caption, col.columns, ...)

Principales argumentos:

  • x: matrix o data frame con los datos.
  • header: vector de caracteres especificando el nombre de las columnas.
  • rnames: nombre de las filas.
  • rowlabel: cabecera de la columna que contiene el nombre de las filas.
  • caption: título de la tabla.
  • tfoot: Añadir pie de tabla.
  • align: alineación de las columnas ('l', 'c', 'r').
  • css.table: especificar estilo de la tabla ("margin-top: 1em; margin-bottom: 1em;").
  • pos.caption: posición del título ("bottom","top").
  • col.columns: color de fondo de las columnas.

Ejemplo: htmlTable()

htmlTable::htmlTable(round(mtcars[1:6, 1:8],2), col.columns = c(rep("#E6E6F0", 1),
                          rep("#F0FD99", 7)), css.cell = "padding: 0.5em")
mpg cyl disp hp drat wt qsec vs
Mazda RX4 21 6 160 110 3.9 2.62 16.46 0
Mazda RX4 Wag 21 6 160 110 3.9 2.88 17.02 0
Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.21 19.44 1
Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02 0
Valiant 18.1 6 225 105 2.76 3.46 20.22 1

Comparación de las funciones de creación de tablas anteriores:

Función Lo mejor Formatos de salida compatibles
kable() Sencillez y facilidad de uso Compatibilidad con todos los formatos (HTML, PDF, Word, …)
pandoc.table() Personalización avanzada Compatibilidad con todos los formatos (HTML, PDF, Word, …)
xtable() Permite como argumento objetos de tipo lm, glm, anova, …, buena personalización de tablas Compatible sólo con PDF y HTML
htmlTable() Personalización avanzada de tablas, especificación de estilos mediante CSS Compatible sólo con HTML

9. Figuras

La figuras producidas por los trozos de código se insertarán automáticamente en el documento final.

Ejemplo:

set.seed(1)
n <- 100
x <- rnorm(n)
par(mfrow = c(1, 2))
for (i in 1:2) {
  y <- i*x + rnorm(n)
  plot(x, y , main=i)
}

Figuras: Algunas opciones

Argumento Descripción
fig.path Directorio donde se guardarán las figuras creadas (p.ej: 'figures/').
fig.show Opciones para mostrar las figuras ('asis': en el lugar exacto donde se generan, 'hold': todas las figuras al final del trozo, 'animate': envolver los gráficos en una animación, 'hide': generar gráficos pero ocultarlos en el documento)
dev Nombre de la función que se utilizará como dispositivo gráfico para crear las figuras ('bmp', 'pdf', 'png', 'svg', 'jpeg', 'tiff', 'tikz', …)
dev.args Otros argumentos que se pasarán al disposivo gráfico (p.ej: dev.args=list(bg='yellow', pointsize=10)).
fig.ext Extensión del fichero en la figura de salida.
fig.width, fig.height Ancho y alto del gráfico en el dispositivo gráfico (7 por defecto).
out.width, out.height Ancho y alto del gráfico en el fichero de salida final (p.ej: '10cm').
fig.align Alineación de las figuras en el documento ('left', 'right', 'center').
fig.cap Vector de caracteres con leyenda para las figuras.

10. Formatos de salida

Hay muchos formatos de salida disponibles para usar con R Markdown.

El formato de salida se especifica en el campo output de la cabecera (YAML) del documento. Cada formato permite distintos argumentos con opciones para modificar el estilo y estructura del documento final.

HTML

Para crear un documento html especificamos output: html_document en la cabecera (YAML).

Personalizamos el documento de salida, añadiendo los argumentos necesarios como sub-campo del argumento output de la siguiente forma:

---
title: "Ejemplo HTML"
output:
  html_document:
    toc: true
    fig_width: 7
    fig_height: 6
---

⇢ Los opciones de cada campo deben aparecer tabuladas.

HTML: Opciones

Argumento Descripción
toc: true Añadir tabla de contenidos al inicio del documento
toc_depth: 2 Nivel de encabezado máximo que debe aparecer en la tabla de contenidos
toc_float: true Aparezca la tabla de contenidos a la izquierda del documento final
number_sections: true Incluir numeración en los encabezados
theme: default Utilizar temas predefinidos ("default", "cerulean", "journal", "flatly", …).
highlight: default Estilo de resaltado de la sintaxis ("default", "tango", "pygments", "kate", …)
fig_width, fig_height Establecer anchura y altura de las figuras
fig_caption: true Representar figuras con subtítulos
df_print: kable Visualización de tablas ("default", "kable", "tibble")
keep_md: true Guardar documento .md del proceso

HTML: Estilo personalizado

Podemos añadir un estilo propio al documento HTML mediante CSS especificando en la cabecera el archivo de estilos de la siguiente forma:

---
title: "Ejemplo HTML"
output:
  html_document:
    css: styles.css
---

Ejemplo de archivo CSS

Para definir el estilo de secciones específicas incluimos un identificador en el encabezado de la sección:

## Sección 3 {.resaltar}

HTML: Inclusión de contenido HTML adicional

Podemos añadir contenido HTML adicional en el documento de la siguiente forma:

---
title: "Ejemplo HTML"
output:
  html_document:
    includes:
      in_header: header.html
      before_body: doc_prefix.html
      after_body: doc_suffix.html
---

header.html ⇢ Añadir información que no forma parte del contenido de la web: título, vínculos a hojas de estilo CSS, información para los robots de búsqueda, …

doc_prefix.html ⇢ Insertar una cabecera antes del contenido de la web, logos, …

doc_suffix.html ⇢ Añadir información al final de la página (dirección de contacto, estilo CSS utilizado, copyright, …)

PDF (LaTeX)

Para crear un documento PDF especificamos output: pdf_document en la cabecera (YAML). Se requiere LaTeX en el equipo (se recomienda instalación completa).

Personalizamos el documento de salida, añadiendo los argumentos necesarios como sub-campo del argumento output de la siguiente forma:

---
title: "Ejemplo PDF"
output:
  pdf_document:
    toc: true
    number_sections: true
    keep_tex: true
---

PDF: Opciones

Argumento Descripción
toc: true Añadir tabla de contenidos al inicio del documento
toc_depth: 2 Nivel de encabezado mínimo que debe aparecer en la tabla de contenidos
number_sections: true Incluir numeración en los encabezados
fig_width: 7 Establecer anchura predeterminada de las figuras
fig_height: 6 Establecer altura predeterminada de las figuras
fig_caption: true Representar figuras con subtítulos
df_print: kable Visualización de tablas ("default", "kable", "tibble")
highlight: default Estilo de resaltado de la sintaxis ("default", "tango", "pygments", "kate", …)
keep_tex: true Guardar documento .tex del proceso
template: plantilla.tex Plantilla Pandoc que se usará al generar el documento (pandoc-templates)

PDF: Inclusión de contenido LaTeX adicional

Podemos añadir contenido LaTeX adicional en el documento de la siguiente forma:

---
title: "Ejemplo PDF"
output:
  pdf_document:
    includes:
      in_header: header.tex
      before_body: doc_prefix.tex
      after_body: doc_suffix.tex
---

header.tex ⇢ Cargar paquetes de LaTeX, …

doc_prefix.tex ⇢ Insertar una cabecera al documento, logos, …

doc_suffix.tex ⇢ Información al final del documento (dirección de contacto, bibliografía, anexos…)

PDF: Opciones LaTeX

Argumento Descripción
lang Lenguaje del documento
fontsize Tamaño de fuente (P.ej: 11pt)
documentclass Tipo de documento (P.ej: article)
classoption Opciones del tipo de documento (P.ej: oneside)
geometry Márgenes (P.ej: margin=1in)
mainfont, sansfont, monofont, mathfont Tipos de letra (únicamente funciona con xelatex y lualatex)
linkcolor, urlcolor, citecolor Color para links internos, externos y citas (red, green, magenta, cyan, blue, black)


Estas opciones no aparecen como sub-campo de la sección output sino que aparecen en el nivel superior junto a title, author,…

Word

Para crear un documento word especificamos output: word_document en la cabecera (YAML).

Personalizamos el documento de salida, añadiendo los argumentos necesarios como sub-campo del argumento output de la siguiente forma:

---
title: "Ejemplo Word"
output:
  word_document:
    highlight: tango
    df_print: kable
    fig_caption: true
---

Word: Opciones

Argumento Descripción
fig_width: 7 Anchura predeterminada de las figuras
fig_height: 6 Altura predeterminada de las figuras
fig_caption: true Representar figuras con subtítulos
df_print: kable Visualización de tablas ("default", "kable", "tibble")
highlight: default Estilo de resaltado de la sintaxis ("default", "tango", "pygments", "kate", …)
keep_md: true Guardar documento .md del proceso
reference_docx: mystyles.docx Especificar estilo según un documento word de referencia

Presentaciones

R Markdown permite cuatro formatos de presentación:

Para crear nuevas diapositivas utilizamos las etiquetas de encabezado # y ##.

Para crear diapositivas sin cabecera utilizamos ----.

Ejemplo: slidy_presentation

Presentaciones: Algunas opciones

Argumento Descripción
incremental: true Mostrar ítem de listas de forma incremental
highlight: default Estilo de resaltado de la sintaxis ("default", "tango", "pygments", "kate", …)
font_adjustment: -1 Aumentar o disminuir el tamaño por defecto del texto
css: styles.css Añadir un estilo propio mediante CSS
logo: logo.png Ruta a un archivo con un logotipo para añadirlo a la portada de la presentación
footer: "Copyright (c) 2014, RStudio" Añadir texto a pie de página
fig_width: 7, fig_height: 6 Anchura y altura predeterminada de las figuras
fig_caption: true Representar figuras con subtítulos
df_print: kable Visualización de tablas ("default", "kable", "tibble")
keep_md: true Guardar documento .md del proceso

Journals

rticles desde RStudio: Requisitos

1. Instalar la última versión de RStudio.

2. Instalar el paquete rticles: install.packages("rticles", type = "source")

3. Usar el diálogo de R Markdown para crear un artículo desde uno de los templates:

11. Informes parametrizados

Los documentos R Markdown parametrizados son aquellos en los que se incluyen algunos parámetros y los resultados presentados en el informe van a depender del valor que asignemos a dichos parámetros. Estos informes son útiles cuando queremos presentar el mismo análisis pero con distintos valores (p.ej: generar un informe para distintos departamentos o regiones geográficas).

Los parámetros se declaran en el campo params de la cabecera del documento R Markdown. Ejemplo:

---
title: Probando informes con parámetros
output: html_document
params:
  ciudad: "Valencia, España"
---

En el código, accederemos a los valores de los parámetros escribiendo: params$ciudad.

Para volver a generar el documento cambiando los valores de los parámetros utilizamos el argumento params de la función render():

rmarkdown::render("Informe_ciudades.Rmd", params = list(ciudad = 'Alicante, España'))

Ejemplo: Informes parametrizados

rmarkdown::render("Informe_ciudades.Rmd", params = list(ciudad = 'Alicante, España'))

12. Bibliografía y citas

Podemos añadir fácilmente la bibliografía de nuestro documento especificando un archivo de bibliografía en el campo bibliography de la cabecera:

---
title: "Sample Document"
output: html_document
bibliography: bibliography.bib
---

Pandoc genera automáticamente la bibliografía y se coloca al final del documento.

Formatos de bibliografía permitidos:

Formato Extensión del fichero
MODS .mods
BibLaTeX .bib
BibTeX .bibtex
RIS .ris
EndNote .enl
EndNote XML .xml
ISI .wos
MEDLINE .medline
Copac .copac
JSON citeproc .json

Citas

Las citas deben insertarse en el documento mediante una clave, formada por '@' + el identificador de la cita en la base de datos. Ejemplos:

Citas entre paréntesis:

[@Gandrud2015; @Xie2015](Gandrud 2015; Xie 2015)


Citas sin paréntesis para los autores:

@Gandrud2015Gandrud (2015)


Citas sin mencionar al autor:

[-@Gandrud2015](2015)

Referencias no utilizadas

Para incluir artículos en la bibliografía que no son citados en el texto, añadimos en la cabecera del documento:

---
title: "Sample Document"
output: html_document
bibliography: bibliography.bib
nocite: |
  @Broman2016, @Peng2015, @Xie2016
---

Estilo de las citas

¿Qué nos permite R Markdown?


  • Texto, código y resultados en un mismo documento lo que nos ayuda a conseguir que nuestros informes sean reproducibles (sabiendo exactamente cómo hemos obtenido los resultados).

  • Forma muy sencilla de dar formato al texto de nuestro informe mediante el lenguaje markdown.

  • Generación de tablas y figuras automáticamente en el documento, evitándo tener que escribir e insertar manualmente los resultados.

  • Almacenamiento automático de las figuras creadas por los trozos de código en el directorio que elijamos.

  • Gran variedad de formatos de presentación de informes: HTML, Word, PDF, Presentaciones, Artículos, … sin tener que preocuparnos de maquetar manualmente el documento.

  • Generación automática del mismo informe para distintos datos (informes parametrizados).

  • Incorporación automática de bibliografías y sencillez en la citación de documentos.

Recursos útiles:

Referencias

Broman, Karl. 2016. “Writing Reproducible Reports: Knitr with R Markdown.” http://kbroman.org/Tools4RR/.

Gandrud, Christopher. 2015. Reproducible Research with R and Rstudio, Second Edition. Chapman; Hall/CRC.

Peng, Roger D. 2015. “Markdown and R.”

Xie, Yihui. 2015. Dynamic Documents with R and Knitr, Second Edition. Chapman; Hall/CRC.

———. 2016. Bookdown: Authoring Books and Technical Documents with R Markdown. Chapman; Hall/CRC. https://bookdown.org/yihui/bookdown/.




¡ Muchas gracias por vuestra atención !









Licencia de Creative Commons
Este trabajo está bajo una licencia de Creative Commons Reconocimiento 4.0 Internacional.

Práctica 1: R Markdown